package org.jeecg.modules.demo.timeline.service;

import java.util.List;
import java.util.Map;
import org.jeecg.modules.demo.timeline.entity.PatentTimeline;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @Description: 专利时间脉络表
 * @Author: jeecg-boot
 * @Date: 2025-01-15
 * @Version: V1.0
 */
public interface IPatentTimelineService extends IService<PatentTimeline> {
    
    /**
     * 获取专利时间脉络数据
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param eventType 事件类型
     * @param inventor 发明人
     * @param institution 申请机构
     * @return 时间脉络数据
     */
    List<Map<String, Object>> getTimelineData(String startDate, String endDate, 
                                             String eventType, String inventor, String institution);
    
    /**
     * 获取时间脉络统计数据
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param eventType 事件类型
     * @param inventor 发明人
     * @param institution 申请机构
     * @return 统计数据
     */
    Map<String, Object> getTimelineStatistics(String startDate, String endDate, 
                                             String eventType, String inventor, String institution);
    
    /**
     * 生成时间脉络数据
     * 从专利表生成时间脉络数据
     */
    void generateTimelineData();
    
    /**
     * 获取年份分布统计
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 年份分布
     */
    List<Map<String, Object>> getYearDistribution(String startDate, String endDate);
    
    /**
     * 获取机构统计
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 机构统计
     */
    List<Map<String, Object>> getInstitutionStats(String startDate, String endDate);
    
    /**
     * 获取发明人统计
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 发明人统计
     */
    List<Map<String, Object>> getInventorStats(String startDate, String endDate);
    
    /**
     * 清理时间脉络数据
     * 清空所有时间脉络数据
     */
    void clearTimelineData();
}

